package com.itheima.edu.info.manager.controller;
import com.itheima.edu.info.manager.domain.Teacher;
import com.itheima.edu.info.manager.service.TeacherService;
import com.itheima.edu.info.manager.util.AgeUtil;

import java.util.Scanner;

public abstract class BaseTeacherController {
    //创建业务员
    private static TeacherService service = new TeacherService();
    //创建键盘录入
    Scanner sc = new Scanner(System.in);

    public void startT() {
        //开启老师管理系统，并展示学生管理系统菜单
        Scanner sc = new Scanner(System.in);
        TeacherLoop:
        while (true) {
            //主菜单搭建
            System.out.println("--------欢迎来到 <老师> 管理系统--------");
            System.out.println("请输入您的选择: 1.添加老师  2.删除老师  3.修改老师  4.查看老师  5.退出");
            String choice = sc.next();
            switch (choice) {
                case "1":
                    addTeacher();
                    //   System.out.println("添加");
                    break;
                case "2":
                    deleteTeacherById();
                    // System.out.println("删除");
                    break;
                case "3":
                    updateTeacherById();
                    //  System.out.println("修改");
                    break;
                case "4":
                    findAllTeacher();
                    // System.out.println("查看");
                    break;
                case "5":
                    System.out.println("感谢您的使用");
                    break TeacherLoop;
                default:
                    System.out.println("您的输入有误，请重新输入");
                    break;
            }

        }

    }

    //判断用户输入的id是否存在的优化方法
    public String inputTeacherId() {
        String id;
        while (true) {
            System.out.println("请输入工号：");
            id = sc.next();
            //让业务员去检验用户输入的工号id是否存在，存在：继续往下执行  不存在：提示用户重新输入
            boolean exists = service.isExists(id);
            if (!exists) {
                //不存在
                System.out.println("输入的工号不存在，请重新输入");
            } else {
                //存在结束此次while循环
                break;
            }
        }
        return id;
    }

    //输入老师信息并封装为老师对象的优化方法
    public Teacher inputTeacherinfo(String id) {
        System.out.println("请输入老师的姓名：");
        String name = sc.next();

        System.out.println("请输入老师的出生日期：");
        String birthday = sc.next();

        //调用年龄工具类方法，根据出生日期计算年龄
        String age= AgeUtil.getAge(birthday);

        //将录入的数据封装为老师对象
        Teacher tea = new Teacher();
        tea.setId(id);
        tea.setName(name);
        tea.setAge(age);
        tea.setBirthday(birthday);
        return tea;
    }

    //客服修改方法
    private void updateTeacherById() {
        //调用方法：输入工号判断是否存在   存在：继续执行 不存在：提示用户重试
        String updateId = inputTeacherId();
        //调用方法：输入老师信息并封装为新的老师对象
        Teacher newTea = inputTeacherinfo(updateId);
        //指挥业务员进行修改业务，将要进行修改的老师工号和新的老师对象信息作为参数传递
        service.updateTeacherById(updateId,newTea);
        //给出用户提示信息：修改成功
        System.out.println("修改成功");
    }

    //客服删除方法
    private void deleteTeacherById() {
        //调用优化方法：检验用户输入的学号是否存在，存在：可以继续，不存在：提示重试
        String delId = inputTeacherId();
        //指挥业务员去根据学号进行删除操作
        service.deleteTeacherById(delId);
        //给出用户提示：删除成功
        System.out.println("删除成功");
    }

    //客服查看方法
    private void findAllTeacher() {
        //1.指挥业务员进行查看业务，把数据都查出来
        Teacher[] teas = service.findAllTeacher();
        //2.根据业务员返回的数据来组织对应的查看逻辑，没有数据返回null，有数据返回teas
        if (teas == null) {
            //如果没有信息，提示"无信息，请添加后重试"
            System.out.println("无信息，请添加后重试");
        } else {
            //有数据，遍历数组
            System.out.println("工号\t\t姓名\t年龄\t生日");
            for (int i = 0; i < teas.length; i++) {
                Teacher tea = teas[i];
                //判断如果数组的索引位置不为空，将直接打印已有的数据
                if (tea != null) {
                    System.out.println(tea.getId() + "\t" + tea.getName() + "\t" + tea.getAge() + "\t\t" + tea.getBirthday());
                }
            }
        }
    }

    //客服添加方法
    private void addTeacher() {
        String id;
        Scanner sc = new Scanner(System.in);
        //接收用户录入的老师信息
        while (true) {
            System.out.println("请输入老师的工号：");
            id = sc.next();
            //指挥业务员去校验一下当前录入的id是否存在！
            boolean exists = service.isExists(id);
            //存在：让用户重新输入学号，提示：当前工号已被占用，请重新输入
            if (exists) {
                System.out.println("当前工号已被占用，请重新输入");
            } else {
                //不存在可以继续往下执行
                break;
            }
        }
        //调用方法：输入老师信息并封装为老师对象
        Teacher tea = inputTeacherinfo(id);
        //把封装好的老师对象交给业务员，指挥业务员去干添加老师的添加业务
        boolean res = service.addTeacher(tea);
        //根据业务的返回结果，组织对应的输出信息给用户，添加成功/添加失败
        if (res) {
            System.out.println("添加成功");
        } else {
            System.out.println("添加失败");
        }
    }
}
